Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Issue #2643] Initial auth #3492

Merged
merged 11 commits into from
Jan 13, 2025
Merged

[Issue #2643] Initial auth #3492

merged 11 commits into from
Jan 13, 2025

Conversation

acouch
Copy link
Collaborator

@acouch acouch commented Jan 10, 2025

Summary

Fixes #2643

Time to review: 30 mins

Changes proposed

doug-s-nava and others added 10 commits January 7, 2025 10:03
* adds route at /api/auth/callback to be hit by the flask API at the completion of the login flow
* adds jwt token parsing logic
* adds support for a "SESSION_SECRET" env var
* adds a User page for temporary testing
* adds a context provider and hook to allow client components to access up to date logged in user information
* adds a NextJS route to return user data decrypted from the session cookie passed up from the client
* makes some temporary updates to the feature flags table in order for that page
to act as a proof of concept for the functionality
* moves some feature flags and loading spinner code to a more suitable location.
Creates a Node route for logging out to log out a user, which
* calls the API logout endpoint
* removes client side cookie

Also adds fetch function to use to call the API logout route and a dummy logout button to use for testing
…em for client side use (#3374)

* rewrites the FeatureFlagManager and useFeatureFlag hook to allow syncing flags between server and client using cookies
* adds the `authOn` feature flag in frontend code and terraform
* refactors the `environments` setup a bit to more easily expose feature flags
* splits functionality that does not benefit from being held in the FeatureFlagsManager class into a helper file
* moves feature flag manager file into a nested directory
* updates to session management to allow for decrypting the login.gov JWT in order to pull out user email
* creation of a logged in state for the header
## Summary
Fixes #2962

### Time to review: __15 mins__

## Changes proposed

* Adds a modal for the login link
* Moves the env route handler to a redirect


#### Mobile

![image](https://github.com/user-attachments/assets/4d44f545-f1ce-419e-898d-dde3d859f55b)

#### Desktop

![image](https://github.com/user-attachments/assets/a34ead51-57f7-4c9b-a2e4-631f58e085f3)


### TODO

- [x] verify it is accessible
- [x] add tests
- [x] look over again
* fix bug where mobile login dropdown appeared on top of mobile menu
* improve spacing on mobile login dropdown
* the callback route redirects to the home page on success, or an unauthorized page if no token is present or error page in error cases
* creates error and unauthorized pages
* adds middleware to implement the correct status codes on these redirects
@acouch acouch marked this pull request as ready for review January 10, 2025 21:35
@doug-s-nava
Copy link
Collaborator

does this need a review? is there new stuff in here, or has all of this already been reviewed?

@acouch
Copy link
Collaborator Author

acouch commented Jan 13, 2025

is there new stuff in here, or has all of this already been reviewed?

This has all been reviewed.

Copy link
Collaborator

@doug-s-nava doug-s-nava left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ ✅ ✅ ✅

did not re-review but all of this has previously been approved. Rubber stamping the merge of the release branch.

@acouch acouch merged commit b17f8e3 into main Jan 13, 2025
21 checks passed
@acouch acouch deleted the feature/nextjs-auth branch January 13, 2025 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SGG/Login.Gov Integration (Next.js <-> API)
2 participants